package test;

import java.util.Scanner;

/**
 * @author sunzhuokun
 * @date 8:56 2024/5/13
 * @description 解密犯罪时间
 * 警察在侦破一个案件时，得到了线人给出的可能犯罪时间，形如“HH:MM
 * ”表示的时刻。根据警察和线人的约定，为了隐蔽，该时间是修改过的，解密规则为:利用当前出现过的数字，构造下一个距离当前时间最近的时刻，
 * 则该时间为可能的犯罪时间。每个出现数字都可以被无限次使用。
 * <p>
 * 输入描述
 * <p>
 * 形如HH:SS字符串，表示原始输入
 * <p>
 * 输出描述
 * <p>
 * 形如HH:SS的字符串，表示推理处理的犯罪时间。
 */
public class CrimeTimeDecrypting_解密犯罪时间 {

    public static void main(String[] args) {
        // write your code here
        Scanner in = new Scanner(System.in);
        String input = in.nextLine();
        char[] key = new char[4];
        key[0] = input.charAt(0);
        key[1] = input.charAt(1);
        key[2] = input.charAt(3);
        key[3] = input.charAt(4);
        String result = "";
        int min = getTime('2', '4', '0', '0');
        int tFlag = getTime(key[0], key[1], key[2], key[3]);
        for (int i = 0; i < 4; i++) {
            if (key[i] > '2') {
                continue;
            }
            char[] team = new char[4];
            team[0] = key[i];
            for (int j = 0; j < 4; j++) {
                if (key[i] == '2' && key[j] > '3') {
                    continue;
                }
                team[1] = key[j];
                for (int k = 0; k < 4; k++) {
                    if (key[k] > '6') {
                        continue;
                    }
                    team[2] = key[k];
                    for (int l = 0; l < 4; l++) {
                        team[3] = key[l];
                        int t = getTime(team[0], team[1], team[2], team[3]);
                        int curTime;
                        if (t > tFlag) {
                            curTime = t - tFlag;
                        } else {
                            curTime = getTime('2', '4', '0', '0') - tFlag + t;
                        }
                        if (min > curTime) {
                            min = curTime;
                            StringBuilder e = new StringBuilder();
                            e.append(team[0]);
                            e.append(team[1]);
                            e.append(':');
                            e.append(team[2]);
                            e.append(team[3]);
                            result = e.toString();
                        }
                    }
                }
            }
        }
        if (result.equals("")) {
            System.out.println(input);
        } else {
            System.out.println(result);
        }

    }

    public static int getTime(int h1, int h2, int s1, int s2) {
        h1 -= '0';
        h2 -= '0';
        s1 -= '0';
        s2 -= '0';
        return h1 * 10 * 60 + h2 * 60 + s1 * 10 + s2;
    }

}
